XSS 漏洞有哪些类型
XSS漏洞分为以下三类:
反射型XSS: 直接复制参数内容并写入应用响应报文,而未对参数内容进行过滤时,可能导致反射型XSS。
存储型XSS:当应用允许将输入数据作为参数存储在应用的数据库中以备后用时可能导致存储型XSS。把用户输入的数据”存储“在服务器端。这种XSS具有很强的稳定性。
DOM based XSS:当参数数据能够通过JavaScript函数导入到某个DOM元素时可能导致DOM型XSS。也是一种反射型XSS,由于历史原因被单独列出来了。通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
防御XSSI攻击的必要条件有以下这些:
如果网站返回“X-Content-Type-Options:nosniff”HTTP头部的话,那么该攻击就会偃旗息鼓了。所以,最简单的防御措施,就是让它返回这个头部。服务器可以通过nosniff头部告诉浏览器,“当我说将给你<Content-Type>时,就意味着这是真的<Content-Type>!”。
脚本标签只能用于GET请求。因此,如果端点只接受POST请求,则此攻击就无能为力了。这个要求看似简单,但务必要小心。您可能已经设计了只接收POST请求的API,但您的内容管理系统也许仍然可以接收GET请求。
如果端点始终返回200,那么也就无法从状态码中窃取信息了。但是,状态码的存在,不要仅仅为了阻止这种攻击而简单粗暴地废弃了HTTP协议的核心部分。请改用nosniff头部来阻止该攻击。
如果攻击者能够在自己的浏览器中加载私密信息,那么他就不需要这种攻击了。该攻击主要是设法让用户访问攻击者的域,然后以用户在其他域的权限来获取更多信息,这通常要求用户已经经过了相应的认证。除此之外,如果您的家庭路由器有此漏洞,那么恶意公共站点可以通过它请求脚本,从而导致信息泄漏。